import '../entities/favorite.dart';
import '../entities/anime.dart';

/// 收藏数据仓库接口
/// 定义收藏相关的业务操作
abstract class FavoriteRepository {
  /// 获取收藏列表
  Future<List<Anime>> getFavorites();

  /// 添加收藏
  Future<void> addFavorite(Anime anime, [FavoriteStatus? status]);

  /// 移除收藏
  Future<void> removeFavorite(int animeId);

  /// 检查是否已收藏
  Future<bool> isFavorite(int animeId);

  /// 清空收藏
  Future<void> clearFavorites();

  /// 获取收藏数量
  Future<int> getFavoriteCount();

  /// 更新收藏状态
  Future<void> updateFavoriteStatus(int animeId, FavoriteStatus status);

  /// 更新观看进度
  Future<void> updateWatchedEpisodes(int animeId, int watchedEpisodes);

  /// 更新个人评分
  Future<void> updatePersonalScore(int animeId, double score);

  /// 更新备注
  Future<void> updateNotes(int animeId, String notes);

  /// 获取所有收藏
  Future<List<Favorite>> getAllFavorites();

  /// 根据状态获取收藏
  Future<List<Favorite>> getFavoritesByStatus(FavoriteStatus status);

  /// 获取特定动漫的收藏信息
  Future<Favorite?> getFavorite(int animeId);

  /// 清除所有收藏
  Future<void> clearAllFavorites();

  /// 获取收藏统计
  Future<Map<FavoriteStatus, int>> getFavoriteStats();
} 